package algorithm.difficult;

import java.util.Arrays;

/**
 * @BelongsProject: LeetCode
 * @BelongsPackage: algorithm.difficult
 * @Author: 江岸
 * @CreateTime: 2021-02-03 23:43
 * @Description:给你一个数组 nums，有一个长度为 k 的窗口从最左端滑动到最右端。窗口中有 k 个数，每次窗口向右移动 1 位。你的任务是找出每次窗口移动后得到的新窗口中元素的中位数，并输出由它们组成的数组。
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/sliding-window-median
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
//滑动窗口
public class MedianSlidingWindow480 {
    public static double[] medianSlidingWindow(int[] nums, int k) {
        int[] arr = new int[k];
        double[] dd = new double[nums.length-k+1];
        for (int i=0;i<=nums.length-k;i++){
            for (int j=0;j<k;j++){
                arr[j] = nums[j+i];
            }
            Arrays.sort(arr);
            if (arr.length%2==0){
                dd[i] =  (double) (arr[arr.length/2])/2 + (double) (arr[arr.length/2-1])/2;
            }else {
                dd[i] =  arr[arr.length/2];
            }
        }
        return dd;
    }

}
